#ifndef BASEMODEL_DEVICE_REQUEST_H
#define BASEMODEL_DEVICE_REQUEST_H

#include "../common.h"

// 音频参数配置
typedef struct {
    int32_t channels;           // 音频声道数，通常为1（单声道）
    format_t format;            // 音频格式，如"opus"
    int32_t frame_duration;     // 音频帧时长（毫秒），如60
    int32_t sample_rate;        // 采样率，如16000或24000
} audio_params_t;

// 功能特性配置
typedef struct {
    bool aec;   // 回声消除（Acoustic Echo Cancellation）
    bool mcp;   // Model Context Protocol支持
} features_t;

// Hello请求消息 - 建立连接时的握手消息
typedef struct {
    msg_type_t type;                // 消息类型，固定为MSG_TYPE_HELLO
    int32_t version;                // 协议版本，WebSocket为2，MQTT为3
    features_t features;            // 功能特性配置
    transport_t transport;          // 传输协议类型，如"websocket"、"udp"
    audio_params_t audio_params;    // 音频参数配置
} hello_req_t;

// Listen请求消息 - 开始或停止监听
typedef struct {
    msg_type_t type;            // 消息类型，固定为MSG_TYPE_LISTEN
    session_id_t session_id;    // 会话ID
    listen_state_t state;       // 监听状态枚举，detect用于唤醒词，正常对话使用start
    listen_mode_t mode;         // 监听模式枚举，本身包括auto/manual等模式，仅第一次对话使用realtime后按照音频包控制即可
    bool has_text;              // 是否包含文本内容
    text_t text;                // 可选的文本内容（用于文本检测模式，仅state为detect时有效）
} listen_req_t;

#endif // BASEMODEL_DEVICE_REQUEST_H
